def get_attn_pad_mask(seq_q, seq_k):  
    '''
    seq_q: [batch_size, seq_len]
    seq_k: [batch_size, seq_len]
    '''
    # pad的位置标记上True
    batch_size, len_q = seq_q.size()
    batch_size, len_k = seq_k.size()

    # seq_k:[[1,2,3,4,0],[1,2,4,5,0]] ->pad_attn_mask [[F,F,F,F,T], 
    #                                                                   [F,F,F,F,T]]
    # 通过seq_k.data.eq(0),判断哪些位是pad（pad的编码为0）
    # 举例,输入seq =[1,2,3,4,0],seq.data.eq(0)就会返回[F,F,F,F,T]
    # 扩展一个维度,因为word embedding是三维的
    pad_attn_mask = seq_k.data.eq(0).unsqueeze(1)
    # pad_attn_mask [batch_size, 1, len_k], False is masked

    # expand增加的原维度必须是 1才可以在该维度增加维度,其他值均不可以
    return pad_attn_mask.expand(batch_size, len_q, len_k)
    # 对于每一个batch_size对应的一行,都扩充为len_q行
    # [batch_size, len_q, len_k]
